package com.hiwi.platform.main;

import com.hiwi.platform.model.FieldBeanEx;
import com.hiwi.platform.model.SearchField;
import com.hiwi.platform.model.TableConfig;
import com.hiwi.platform.tool.db.DbConn;

public class RunEntrance {

    /**
     * 初始化采薇163的配置
     */
    public static void initCaiwei163Config() {
        /*********数据库链接***********/
        DbConn.DATABASE_TYPE = "MYSQL";
        DbConn.URL = "jdbc:mysql://10.173.32.33:3306/wb-db-test?autoCommit=true&useUnicode=true&autoReconnect=true&allowMultiQueries=true";
        DbConn.USERNAME = "dev";
        DbConn.PASSWORD = "dev163";
        DbConn.TABLE_SCHEMA = "wb-db-test";

        /***包名,适配不同的项目****/
        CodeMeachine.PACKAGE_NAME = "com.caiwei163.youdu.webapp.backend";
        /***适配不同的模版引擎 freemaker 或 velocity****/
        CodeMeachine.TEMPLATE_ENGINE = "freemaker";
        // 生成文件的路径 必须填写(本地工程的路径)
        CodeMeachine.FILE_PATH = "H:/git-wangyi-home/youdu-webapp-backend/";
        // 初始化参数
        initParam();
    }

    /**
     * 初始化电子签的配置
     */
    public static void initEcontractConfig() {
        /*********数据库链接***********/
        DbConn.DATABASE_TYPE = "MYSQL";
        DbConn.URL = "jdbc:mysql://10.173.32.33:3306/econtract?autoCommit=true&useUnicode=true&autoReconnect=true&allowMultiQueries=true";
        DbConn.USERNAME = "dev";
        DbConn.PASSWORD = "dev163";
        DbConn.TABLE_SCHEMA = "econtract";

        /***包名,适配不同的项目****/
        CodeMeachine.PACKAGE_NAME = "com.netease.yuedu.webapp.econtract";
        /***适配不同的模版引擎 freemaker 或 velocity****/
        CodeMeachine.TEMPLATE_ENGINE = "freemaker";
        // 生成文件的路径 必须填写(本地工程的路径)
        CodeMeachine.FILE_PATH = "H:/git-wangyi-home/yuedu-webapp-econtract/";
        // 初始化参数
        initParam();
    }


    public static void main(String[] args) {
        /***初始化配置文件***/
        initCaiwei163Config();//采薇
        //initEcontractConfig();//电子签

        /*******1.配置功能信息********/
        //模块名称
        CodeMeachine.MODULE_NAME = "report";
        String tableName = "report_total_book";
        // 参数说明  表名；功能名称；是否新页面编辑
        TableConfig table = new TableConfig(tableName, "书籍总数据统计表", true);

        /********2.需要生成 <<EX扩展代码>> EX扩展代码时 配置字段信息,否则不需要********/
        //1.获得字段初始化配置
        CodeMeachine.generateConfig(tableName);

        /** ----------------以下配置为自动生成------------ **/
        // 设置查询条件
        table.setSearchFields(new SearchField[]{new SearchField("","")});
        // 设置显示字段
        table.setViewFields(new String[]{"bookRoleId", "name", "agreeCount", "initAgreeCount", "auditSts", "createUserId"});
        // 设置新增字段
        table.setAddFields(new String[]{"bookRoleId", "name", "agreeCount", "initAgreeCount", "auditSts", "createUserId"});
        // 设置不能修改字段
        table.setCanNotEditFields(new String[]{});
        // 导出的字段不设置不导出
        table.setExportFields(new String[]{});
        /** ----------------字段属性配置------------ **/
        // 参数说明：参数说明：字段名,页面显示名称,是否允许为空,是否可以重复,最小长度(数字时为最大最小值),最大长度
        table.addField(new FieldBeanEx("bookRoleId", "书籍角色ID", true, true, 0, 20));
        table.addField(new FieldBeanEx("name", "标签名称", true, true, 0, 16));
        table.addField(new FieldBeanEx("agreeCount", "赞同人数", true, true, 0, 10));
        table.addField(new FieldBeanEx("initAgreeCount", "初始化赞同人数", true, true, 0, 10));
        table.addField(new FieldBeanEx("auditSts", "审核状态 0：通过；1.嫌疑 ；5.不通过(人工审核)", true, true, 0, 4));
        table.addField(new FieldBeanEx("createUserId", "创建用户ID，后台创建时为0", true, true, 0, 20));
        /** ----------------字段属性配置------------ **/
        /** ----------------以上配置为自动生成------------ **/

        //3.代码生成
        generateBase(tableName);
        //generateEx(table);
    }

    /**
     * 生成扩展-不可以覆盖生成
     *
     * @param table
     */
    public static void generateEx(TableConfig table) {
        if (table == null) {
            throw new RuntimeException("table 参数不能为空");
        }
        /****************** 根据自己的实际需要生成为对应的文件(说明请查看:readme文件) ***********************/
        //CodeMeachine.generateVOFile(table);
        //CodeMeachine.generateMapperExFile(table);

        CodeMeachine.generateFtlFile(table);
        CodeMeachine.generateQueryFile(table);
        //CodeMeachine.generateRequestFile(table);
        CodeMeachine.generateControllerFile(table);
        //CodeMeachine.generateServiceFile(table);
    }

    /**
     * 生成基础对象-可以覆盖生成
     *
     * @param tableName 表名
     */
    public static void generateBase(String tableName) {
        CodeMeachine.generateBeanFile(tableName);
        CodeMeachine.generateMapperFile(tableName);
    }

    /**
     * 此方法中参数无需调整
     */
    public static void initParam() {
    }
}
